package com.xf.io.charStream;

import java.io.*;
import java.util.Scanner;

public class CharStreamTest {
    public static void main(String[] args) throws Exception {
        charWriter();
        charReader();

    }

    private static void charWriter() throws IOException {
        // 需求: 将键盘录入的用户名和密码保存到本地实现永久化存储
        // 要求：用户名独占一行，密码独占一行

        // 分析：
        // 1，实现键盘录入，把用户名和密码录入进来
        Scanner sc = new Scanner(System.in);
        System.out.println("请录入用户名");
        String username = sc.next();
        System.out.println("请录入密码");
        String password = sc.next();

        // 2.分别把用户名和密码写到本地文件。
        Writer fw = new FileWriter("java-se\\src\\main\\java\\com\\xf\\io\\charStream\\a.txt");
        // 将用户名和密码写到文件中
        fw.write(username);
        // 表示写出一个回车换行符 windows \r\n  MacOS \r  Linux \n
        fw.write("\r\n");
        fw.write(password);
        // 刷新流
        fw.flush();
        // 3.关流,释放资源
        fw.close();


        // 下面我们如果将项目的整体编码设置为UTF-8的话,写入的文件打开就会出现乱码问题,因此字符流就是避免这个问题
        /*
        FileOutputStream fw = new FileOutputStream("java-se\\src\\main\\java\\com\\xf\\io\\charStream\\a.txt");
        // 将用户名和密码写到文件中
        fw.write(username.getBytes(Charset.forName("GBK")));
        // 表示写出一个回车换行符 windows \r\n  MacOS \r  Linux \n
        fw.write("\r\n".getBytes());
        fw.write(password.getBytes());
        // 刷新流
        fw.flush();
        // 3.关流,释放资源
        fw.close();
        */
    }

    private static void charReader() throws IOException {
        // 字符流读取
        // 2.分别把用户名和密码写到本地文件。
        Reader fr = new FileReader("java-se\\src\\main\\java\\com\\xf\\io\\charStream\\a.txt");
        char[] chs = new char[1024];
        int len;
        while ((len = fr.read(chs)) != -1) {
            System.out.print(new String(chs, 0, len));
        }
        // 3.关流,释放资源
        fr.close();
    }
}
